// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.SQLObjectImpl;
// import com.alibaba.druid.sql.ast.expr.SQLBinaryOperator;
// import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "../SQLObjectImpl.h"

class SQLPartitionRef_Item : virtual public SQLObjectImpl
{
public:
  SQLIdentifierExpr_ptr columnName;
  SQLExpr_ptr value;
  SQLBinaryOperator_ptr operator_;

  SQLPartitionRef_Item();
  SQLPartitionRef_Item(SQLIdentifierExpr_ptr columnName);
  SHAREDOBJECT(SQLPartitionRef_Item);

  // @Override
  void accept0(SQLASTVisitor_ptr v);

  SQLIdentifierExpr_ptr getColumnName();

  void setColumnName(SQLIdentifierExpr_ptr x);

  SQLExpr_ptr getValue();

  void setValue(SQLExpr_ptr x);

  SQLBinaryOperator_ptr getOperator();

  void setOperator(SQLBinaryOperator_ptr operator_);
};

class SQLPartitionRef : virtual public SQLObjectImpl
{
public:
  SQLPartitionRef_Item_list_ptr items;

  SQLPartitionRef();
  SHAREDOBJECT(SQLPartitionRef);
  // @Override
  void accept0(SQLASTVisitor_ptr v);

  SQLPartitionRef_Item_list_ptr getItems();

  void addItem(SQLPartitionRef_Item_ptr item);

  void addItem(SQLIdentifierExpr_ptr name, SQLExpr_ptr value);
};
